export default {
	debounce(fn,delay = 100,promptly) {
	    let timer = null;
	    return function(...args) {
	        // 立即执行
	        if(promptly) {
	            // 当timer为null时执行
	            if(!timer) fn.apply(this,args);
	            if(timer) {
	                clearTimeout(timer)
	            }
	            timer = setTimeout(() => {
	                timer = null;
	            },delay)
	        }else {
	            if(timer) {
	                clearTimeout(timer)
	            }
	            timer = setTimeout(() => {
	                fn.apply(this,args);
	            },delay)
	        }
	    }
	},
	isFloat(num) {
		const y = String(num).indexOf(".") + 1; //获取小数点的位置
		if (y > 0) {
			return true
		} else {
			return false
		}
	},
	/**
	 * 控制header显示和fixed
	 * @param {Object} _className
	 * @param {Object} _fixed
	 */
	fixHeader(_className, _fixed) {
		let query = uni.createSelectorQuery().select(_className);

		query.boundingClientRect(data => {
			// console.log(data)
			if (data.top > 0) {
				_fixed = false
			} else {
				_fixed = true
			}
		}).exec();
	},
	cleanArray(actual) {
		const newArray = []
		for (let i = 0; i < actual.length; i++) {
			if (actual[i]) {
				newArray.push(actual[i])
			}
		}
		return newArray
	},
	jsonToQuery(json) {
		for (let key in json) {
			if (json[key] == null || json[key] == undefined) {
				delete json[key]
			}
		}
		if (!json) return ""
		return this.cleanArray(Object.keys(json).map(key => {
			if (json[key] === undefined) return ""
			return encodeURIComponent(key) + "=" +
				encodeURIComponent(json[key])
		})).join("&")
	},
	/**
	 * 通过经纬度计算距离（KM）
	 * @param {Object} latlng1
	 * @param {Object} latlng2
	 */
	getDistance(latlng1, latlng2) {
		// console.log("distanceFlt==", latlng1, latlng2)
		let lat1 = latlng1.latitude;
		let lng1 = latlng1.longitude;
		let lat2 = latlng2.latitude;
		let lng2 = latlng2.longitude;
		if (lat1 == null || lng1 == null || lat2 == null || lng2 == null) {
			return 0;
		}
		var radLat1 = (lat1 * Math.PI) / 180.0;
		var radLat2 = (lat2 * Math.PI) / 180.0;
		var a = radLat1 - radLat2;
		var b = (lng1 * Math.PI) / 180.0 - (lng2 * Math.PI) / 180.0;
		var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(
			Math.sin(b / 2), 2)));
		s = s * 6378.137; // EARTH_RADIUS;
		s = Math.round(s * 10000) / 10000;
		// return s * 1000;
		return s.toFixed(2);
	},
	toPercentNum(point) {
		const str = Number(point / 100);
		return str;
	},
	toNum(point) {
		let str = Number(point) * 100
		console.log("str", (str + "").length)
		if ((str + "").length > 6) {
			str = str.toFixed(2)
		}
		return str
	},
	dateFormat(date, fmt="YYYY-MM-dd") {
		let ret;
		const opt = {
			"Y+": date.getFullYear().toString(), // 年
			"m+": (date.getMonth() + 1).toString(), // 月
			"d+": date.getDate().toString(), // 日
			"H+": date.getHours().toString(), // 时
			"M+": date.getMinutes().toString(), // 分
			"S+": date.getSeconds().toString() // 秒
			// 有其他格式化字符需求可以继续添加，必须转化成字符串
		};
		for (let k in opt) {
			ret = new RegExp("(" + k + ")").exec(fmt);
			if (ret) {
				fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
			};
		};
		return fmt;
	}
}
